package com.example.springcloudeurekaserverproducer;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * http://localhost:8084/druid/index.html
 */
@Configuration
public class DruidConfig {
	//用户名
    @Value("${druid.username}")
	private String username;
    //密码
    @Value("${druid.password}")
	private String password;
    //ip地址
	@Value("${druid.ip}")
	private String ip;
	//黑名单ip
	@Value("${druid.blackIp}")
	private String blackIp;
	//是否能够重置数据.
	@Value("${druid.resetEnable}")
	private String resetEnable;
	@Bean
	@ConfigurationProperties(prefix="spring.datasource")
	public DataSource druidDataSource() {
		return new DruidDataSource();
	}

	@Bean
	public ServletRegistrationBean druidServlet() {
		ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
		//白名单：
		servletRegistrationBean.addInitParameter("allow",ip);
		//IP黑名单 (存在共同时，deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
		servletRegistrationBean.addInitParameter("deny",blackIp);
		//登录查看信息的账号密码.
		servletRegistrationBean.addInitParameter("loginUsername",username);
		servletRegistrationBean.addInitParameter("loginPassword",password);
		//是否能够重置数据.
		servletRegistrationBean.addInitParameter("resetEnable",resetEnable);
		return servletRegistrationBean;
	}

	@Bean
	public FilterRegistrationBean filterRegistrationBean() {
		FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
		filterRegistrationBean.setFilter(new WebStatFilter());
		filterRegistrationBean.addUrlPatterns("/*");
		filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
		return filterRegistrationBean;
	}

}

